<?php
/**
 * Created by PhpStorm.
 * User: bzg
 * Date: 2019/11/29
 * Time: 15:57
 */

namespace App\Extend\SysExtend\Cache;

/**
 * 缓存接口
 * Interface CacheInterface
 * @package App\Extend\SysExtend\Cache
 */
interface CacheInterface
{
    /**
     * 获取缓存对象
     * @return mixed
     */
    public function getInstance();

    /**
     * 回收对象
     * @param object $obj 需要回收的对象
     * @return mixed
     */
    public function recycle($obj);

    /**
     * 注册缓存
     * @param array $config 配置信息
     * @return mixed
     */
    public function register(array $config);

    /**
     * 获取值
     * @param string $key
     * @return mixed
     */
    public function get(string $key);

    /**
     * 设置值
     * @param string $key 键
     * @param mixed $value 值
     * @param int $out_time 过期时间
     * @return mixed
     */
    public function set(string $key, $value, int $out_time = 0);

    /**
     * 自增
     * @param string $key 键
     * @param int $offset 步长
     * @return mixed
     */
    public function inc(string $key,int $offset);

    /**
     * 自减
     * @param string $key 键
     * @param int $offset 步长
     * @return mixed
     */
    public function dec(string $key,int $offset);

    /**
     * 删除缓存
     * @param string $key 键
     * @return mixed
     */
    public function del(string $key);
}